#ifndef __RESULTADO_H__
#define __RESULTADO_H__

#include "descriptor_alumno.h"
#include "arbol_binario.h"

class Resultado {

private:

	/**
	 * El resultado se representa con un arbol binario de descriptores.
	 * Cada rama completa del arbol representa una relacion.
	 * Cada nodo contiene un descriptor, el cual es falso para las
	 * relaciones de su hijo izquierdo, y verdadero para las del derecho.
	 * Las hojas del arbol contienen el calificador, y se apuntan a si
	 * mismas en su hijo izquierdo si este es falso, o en el derecho si
	 * es verdadero.
	 */
	ArbolBinario<DescriptorAlumno>* arbolDeRelaciones;

public:

	/**
	 * Postcondiciones: El resultado queda creado sin arbol de relaciones.
	 */
	Resultado();

	/**
	 * Postcondiciones: El resultado queda destruido, eliminandose su arbol.
	 */
	~Resultado();

	/**
	 * Precondiciones: El arbol debe existir y ser valido.
	 * Postcondiciones: El arbol queda seteado al indicado.
	 *                  Si ya tenia uno se lo elimina.
	 */
	void setArbolDeRelaciones(ArbolBinario<DescriptorAlumno>*);

	/**
	 * Postcondiciones: Retorna el arbol de relaciones.
	 */
	ArbolBinario<DescriptorAlumno>* getArbolDeRelaciones();
};

#endif /* __RESULTADO_H_ */
